// 云函数入口文件
const cloud = require('wx-server-sdk') 
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const db = cloud.database()
  const addresses = db.collection('addresses')
  const openid = wxContext.OPENID

    // 记录接收到的 event，便于排查前端传参问题（不要记录敏感信息）
    console.log('addAddress event:', JSON.stringify(event))

  // 如果传入 getList 标志，则返回当前用户所有地址
  if (event.getList) {
    const res = await addresses.where({ _openid: openid }).orderBy('created_at', 'desc').get()
    return { addresses: res.data }
  }

  // 校验必填字段（用于新增地址场景）
  // 更严格的空值判断：先把所有空白字符（包括普通空格、制表符、不可见空白等）去掉再判断
  if (event.contact == "" || event.phone== "" || event.detail== "") {
    // 返回接收到的值用于调试前端是否正确提交（生产环境可去掉此返回）
    return { code: 400, success: false, msg: '缺少必填字段', received: { contact: event.contact, phone: event.phone, detail: event.detail } }
  }

  // 规范 is_default，表单复选框可能会传回字符串 'true'
  const is_default = (event.is_default === true) || (String(event.is_default) === 'true')

  // 如果设置为默认，先取消原有默认
  if (is_default) {
    await addresses.where({ _openid: openid, is_default: true }).update({
      data: { is_default: false }
    })
  }
  // 新增地址
  await addresses.add({
    data: {
      _openid: openid,
      contact: event.contact,
      phone: event.phone,
      detail: event.detail,
  is_default: is_default,
      created_at: new Date()
    }
  })
  // 返回该用户所有地址
  const all = await addresses.where({ _openid: openid }).orderBy('created_at', 'desc').get()
  return { addresses: all.data }
} 